1. Field of the Invention
The present invention relates to printing techniques, and specifically to a printing technique which can be used by a printer which is only capable of outputting to a printer head a fixed number of bits at a time so as to enable the printer to print using printer heads having different numbers of nozzles.
2. Description of the Related Art
Printers are frequently designed to be compatible only with a specific type of printer head. For example, a printer which is meant for use with a 128 nozzle ink jet printer head typically would have a random access memory (RAM) buffer which is sized to accommodate only enough image data to enable printing of an image band 128 pixels (each pixel having a binary value) high. Even more importantly, the circuitry of the printer typically would be constructed to read from the buffer, and to output to the printer head, only 128 bits at a time.
A specific example of a conventional printing technique for printing at 360 dots/inch using only black ink will now be described in more detail with reference to FIGS. 1, 2A, 2B and 2C. FIG. 1 illustrates a functional block diagram of hardware used to implement the conventional technique. According to FIG. 1, a CPU 1, executing instructions contained in a programmable read-only memory (PROM) 2, first obtains and then stores into a print buffer in RAM 3 a bit map of image data for an image band to be printed.
A graphical depiction of a portion of the print buffer is illustrated in FIG. 2A. As shown in FIG. 2A, the print buffer is 128 bits high and, in order to print 8.2 inches across a page at a resolution of 360 dots/inch, is 2,952 bits wide. Structurally, RAM 3 is organized as a series of data bytes, each having a separate address. Thus, for example, the first column of the print buffer corresponds to bytes 0-15 in RAM 3, counting from top to bottom, the second column corresponds to bytes 16-31, the third column to bytes 32-47.
In this conventional printing technique, once the print buffer has been loaded with the desired bit map image, the arrangement of the image data in the print buffer matches exactly the arrangement of image data in the image band to be printed. Therefore, as depicted in FIG. 2A, the arrangement of print data in the print buffer also corresponds exactly to the manner in which dots are to be printed on the output page. As a result, the printer's function is to cause an ink dot to be printed in a band on an output page at each location spatially corresponding to each bit location in the print buffer that has a value of 1. Similarly, the printer will suppress printing a dot for each location corresponding to a 0 value. By printing in this manner, a band 8.2 inches wide and 128/360 inches high will be printed on an output sheet of paper. After one band has been printed, the procedure is simply repeated for the number of bands required to print the entire page.
In order to effect printing of the data in the print buffer as described above, a gate array 4 first reads a 128 bit data sequence out of the print buffer. In this regard, gate array 4 can be instructed to read the bit data sequence according to one of several predetermined patterns. The actual pattern selected in this particular case will depend upon the configuration of the nozzles in the printer head. Specifically, if the nozzles in the printer head to be used are arranged in a single vertical column, the bit data sequence pattern would correspond to a single column of the print image buffer, such as column 11 (bytes 0-15, containing B1.sub.1 -B16.sub.1), column 12 (bytes 16-31, containing B1.sub.2 -B16.sub.2), or column 13 (bytes 32-47, containing B1.sub.3 -B16.sub.3), as shown in FIG. 2A.
Alternatively, the nozzles in the printer head to be used might be arranged in a staircase pattern. In this case, gate array 4 will be instructed to read the bit data sequence from the print buffer in a staircase pattern, such as staircase patterns 16 and 17 shown in FIG. 2B, in order to accurately reproduce the contents of the print buffer on paper. Thus, for example, one bit data sequence read by gate array 4 (corresponding to staircase pattern 16) would include bytes 0, 1, 18, 19, 36, 37, 54, 55, 72, 73, 90, 91, 108, 109, 126 and 127 (containing B1.sub.1, B2.sub.1, B3.sub.2, B4.sub.2, B5.sub.3, B6.sub.3, B7.sub.4, B8.sub.4, B9.sub.5, B10.sub.5, B11.sub.6, B12.sub.6, B13.sub.7, B14.sub.7, B15.sub.8 and B16.sub.8). A slightly different staircase pattern which can be read by gate array 4 is illustrated in FIG. 2C.
For purposes of the following discussion, it will be assumed that the printer head 5 has 128 black nozzles arranged in a single vertical column, and that gate array 4 is instructed to read one column at a time from the print buffer (i.e., according to the pattern shown in FIG. 2A).
After reading a full column of data from the print buffer, gate array 4 automatically performs a masking function which masks the bits of an input bit data sequence in one byte units according to an input masking word. Specifically, gate array 4 receives as an input a 16 bit masking word, with each bit in the masking word corresponding to one byte of the input bit data sequence. The masking operation is performed each time a bit data sequence is read in by ANDing each bit in each byte of the input bit data sequence with the bit corresponding to that byte in the masking word. For convenience, throughout this specification, data in the input bit data sequence often will be referred to in one byte blocks numbered from 0 to 15.
Thus, if bit 0 of the masking word has a value of 0 and bit 1 has a value of 1, then each bit in byte 0 of the input bit data sequence is forced to zero while each bit in byte 1 of the input bit data sequence remains unaltered. This masking function permits printing of a partial band without the necessity of overwriting portions of the print buffer with zeroes. Printing such a partial band might be desirable, for example, when printing a page which requires a non-integer number of bands.
Upon completion of the masking operation, gate array 4 serially outputs the sequence of bit data into printer head 5. More specifically, gate array 4 outputs the bit data into a shift register 6 in the printer head 5. For example, if column 11 shown in FIG. 2A had been read, gate array 4 would serially transfer each bit from each consecutive byte beginning with byte 0 and ending with byte 15.
After the entire 128 bit data sequence has been loaded into shift register 6, a latch signal 7b is provided by gate array 4 to cause the shift register data to be latched into a latch register 9 in the printer head 5.
Finally, gate array 4 sends heat profile signal 7d, providing heating pulses to cause a printer nozzle to eject a dot of ink, and timing control signals 7c, for controlling the printing timing for each nozzle, to the printer head 5. In addition, each nozzle in the printer head 5 has associated with it one bit in latch register 9, and is caused to print an ink dot only if its associated bit has a value of 1. Thus, when the latch register 9 has been loaded with bytes 0 to 15, the top eight nozzles in printer head 5 correspond to the bits in byte 0 of the latch register, and the bottom eight nozzles correspond to byte 15. Accordingly, the printed array of dots will correspond to the bit pattern in column 11 of the print buffer.
The foregoing process is repeated for each sequence of bit data in the print buffer as the printer head is moved across a page, thereby causing the entire image band represented by the contents of the print buffer to be printed. Thus, referring to FIG. 2A, columns 11, 12, 13, and so on would be printed in sequence, with the printer head 5 moving 1/360 inch between columns.
It may be desirable to use a recording apparatus which records in this manner, and which is designed to use a particular type of printer head (i.e., 128 nozzle all-black) with a different type of printer head (i.e., 136 nozzle color). A problem arises, however, due to the fixed size of the print buffer and the fact that the gate array is only designed to read and output 128 bits at a time. This means that one printer head cannot simply be substituted for another. Owing to the constraints of the head and apparatus design, it is difficult to use the foregoing printer with a printer head having more than 128 nozzles. In particular, with respect to a printer head which loads serial print data into a shift register, as described above, merely loading 128 bits into a printer head having more than 128 nozzles (and consequently, more than 128 bits in its shift register) would cause the remainder of the shift register positions to have indeterminate values, thereby resulting in uncertain printing results.
One solution to the foregoing problem of printing using a printer head of a type/size other than that for which the device was intended would be to replace the hardware elements (such as the RAM 3 and the gate array 4) that are specifically tailored to match a particular printer head. However, this solution also has problems. First, the required changes generally would be difficult and expensive. Second, after these changes had been made, the printer often still would be customized to work with only a single, albeit different, printer head.
Thus, there exists a genuine need for a printing technique which allows a given recording apparatus designed for use with a particular type of printer head to use a printer head of a different type.